package leetcode.p203;

import leetcode.ListNode;

public class Solution {
    //移除链表中的指定值，删除相同值的所有结点
    public ListNode removeElements2(ListNode head, int val){
        //利用哨兵结点，不用分别判断第一个结点
        ListNode newHead=new ListNode(-1);
        newHead.next=head;

        ListNode prev=newHead;

        while (prev.next!=null) {
            if(prev.next.val==val) {
                prev.next=prev.next.next;
            }else {
                prev=prev.next;
            }
        }

        return newHead.next;

    }

    public ListNode removeElements(ListNode head, int val) {
        if(head==null) {
            return null;
        }

        ListNode prev=head;
        while(prev.next!=null) {
            if(prev.next.val==val) {
                prev.next=prev.next.next;
            }else {
                prev=prev.next;
            }
        }

        if(head.val==val) {
            //当第一个结点值=删除值时，直接头删
            return head.next;
        }else {
            return head;
        }

    }

}
